![]() publish/subscribeメッセージ・ブローカ
专利摘要:
publish/subscribeメッセージ・ブローカを操作する方法が、パブリッシャからトピックに関するメッセージを受信すること、メッセージをメッセージのシーケンスの開始として識別すること、トピックに対する1つまたは複数の既存のサブスクライバにメッセージを送信すること、トピックに対して新しいサブスクライバを登録すること、トピックに関する別のメッセージをパブリッシャから受信すること、およびトピックに対する1つまたは複数の既存のサブスクライバにその別のメッセージを送信するが、トピックに対する登録済みの新しいサブスクライバには送信しないことを含む。これを達成することのできる一方式は、メッセージをメッセージのシーケンスの開始として識別するステップに続いて、メッセージ・ブローカが、メッセージのシーケンスに対応する新しいサブトピックを作成し、新しいトピックに対して1つまたは複数の既存のサブスクライバを加入させることである。シーケンスに関係する、受信された任意の新しいメッセージが、サブトピックに対して発行されるが、元のトピックに対しては発行されない。トピックに対するいかなる新しいサブスクライバも、サブトピックには加入させられない。 公开号:JP2011514087A 申请号:JP2010549097 申请日:2009-02-25 公开日:2011-04-28 发明作者:ジョーンズ、ガレス、エドワード;ホワイトヘッド、マシュー、ロバート 申请人:インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation; IPC主号:H04L12-56
专利说明:
[0001] 本発明は、publish/subscribeメッセージ・ブローカを操作する方法、メッセージ・ブローカ自体、およびpublish/subscribeメッセージ・ブローカを操作するコンピュータ可読媒体上のコンピュータ・プログラム製品に関する。] 背景技術 [0002] publish/subscribe(pub/sub)は、非同期メッセージングパラダイムである。pub/subシステムでは、パブリッシャがメッセージ・ブローカにメッセージをポストし、サブスクライバがそのブローカにサブスクリプションを登録する。トピック・ベースのシステムでは、ブローカによってホストされるトピックスに対してメッセージが発行される。トピック・ベースのシステムでのサブスクライバは、サブスクライバが加入するトピックスに対して発行されたすべてのメッセージを受信し、トピックに対するすべてのサブスクライバが同一のメッセージを受信する。pub/subは非常に有用なパラダイムであり、各pub/subメッセージが、メッセージ自体のプロパティ(通常はトピック、時には内容)に従ってルーティングされる。各メッセージが到着するときに、第1ステップとして、ブローカはメッセージを解析し、正しいサブスクライバのセットを求め、第2ステップで、それに応じてメッセージが配布される。システムは非同期式である。現在、publish subscribe環境では、パブリッシャは、サブスクライバがそれに関するメッセージを受信することのできるトピックに対してメッセージを発行することができる。あるシナリオでは、発行とサブスクリプションの両方を、指定のトピックから別のトピックにリダイレクトすることが有用となる。] 発明が解決しようとする課題 [0003] 何らかの意味をなすためにはすべてが受信されなければならないメッセージのシーケンスを発行するとき、すなわち1つを除いたすべてのメッセージを受信することが有用とはならないときがある。従って、この発明の目的は、トピックが既にシーケンスを開始している場合に、新しいサブスクライバがそのトピックからメッセージを受信しないようにトピックを操作するメッセージ・ブローカを提供することにある。] 課題を解決するための手段 [0004] 本発明の第1の態様によれば、publish/subscribeメッセージ・ブローカを操作する方法であって、パブリッシャからトピックに関するメッセージを受信すること、メッセージをメッセージのシーケンスの開始として識別すること、トピックに対する1つまたは複数の既存のサブスクライバにメッセージを送信すること、トピックに対して新しいサブスクライバを登録すること、トピックに関する別のメッセージをパブリッシャから受信すること、およびトピックに対する1つまたは複数の既存のサブスクライバにその別のメッセージを送信するが、トピックに対する登録済みの新しいサブスクライバには送信しないことを含む方法が提供される。] [0005] 本発明の第2の態様によれば、パブリッシャからトピックに関するメッセージを受信し、メッセージをメッセージのシーケンスの開始として識別し、トピックに対する1つまたは複数の既存のサブスクライバにメッセージを送信し、トピックに対する新しいサブスクライバを登録し、トピックに関する別のメッセージをパブリッシャから受信し、トピックに対する1つまたは複数の既存のサブスクライバにその別のメッセージを送信するが、トピックに対する登録済みの新しいサブスクライバには送信しないように構成されたpublish/subscribeメッセージ・ブローカが提供される。] [0006] 本発明の第3の態様によれば、publish/subscribeメッセージ・ブローカを操作するコンピュータ可読媒体上のコンピュータ・プログラム製品であって、パブリッシャからトピックに関するメッセージを受信する命令と、メッセージをメッセージのシーケンスの開始として識別する命令と、トピックに対する1つまたは複数の既存のサブスクライバにメッセージを送信する命令と、トピックに対して新しいサブスクライバを登録する命令と、トピックに関する別のメッセージをパブリッシャから受信する命令と、トピックに対する1つまたは複数の既存のサブスクライバにその別のメッセージを送信するが、トピックに対する登録済みの新しいサブスクライバには送信しない命令とを含む製品が提供される。] [0007] 好ましい実施形態により、トピックが既にシーケンスを開始している場合に、新しいサブスクライバがそのトピックからメッセージを受信しないようにトピックを操作するメッセージ・ブローカを提供することが可能となる。好ましい実施形態は、パブリッシャとサブスクライバの両方によって使用されるトピックをクライアント知識なしに1つまたは多数の異なるトピックスにどのようにリダイレクトすることができるかを記述する。] [0008] これが有用となる特定の一状況は、何らかの意味をなすためにはすべてが受信されなければならないメッセージのシーケンスを発行するとき、すなわち1つを除いたすべてのメッセージを受信することが有用とはならないときである。パブリッシャがゲームでのそれぞれの動きを特定のトピックに対して発行するチェスのゲームを考慮する。サブスクライバがこうした発行をゲームの途中で受信することは意味をなさない。そうしたことは、(サブスクライバが盤上のすべての駒の現在位置を理解するためには)前のメッセージなしでは意味をなさないからである。] [0009] 好適な場合として、メッセージ・ブローカを操作する方法では、メッセージをメッセージのシーケンスの開始として識別するステップは、受信したメッセージの内容にアクセスすること、およびアクセスしたメッセージの内容から、メッセージをメッセージのシーケンスの開始として識別することを含む。メッセージ・ブローカは、メッセージの新しいシーケンスが開始した時を識別しなければならない。このことを容易に達成することのできる一方法は、メッセージが新しいシーケンスの開始であることを示す、メッセージの内容の中の明示的または暗黙的マーカについて、受信したメッセージの内容を調べることである。例えば、パブリッシャは、メッセージの本文内に、このメッセージが新しいシーケンスの第1メッセージであることをメッセージ・ブローカに示す所定のフラグを含めることができる。フラグがない場合、メッセージの内容からメッセージがシーケンスの開始であることを判定するように、メッセージ・ブローカをインテリジェントに構成することができる。例えば、チェス・ゲームの動きに関して維持されるトピックの上記の例では、例えば「1.e4」または同様の何かの存在が、新しいシーケンスを示す。メッセージを新しいシーケンスの開始として識別することは、メッセージの内容以外の何か、例えばパブリッシャの位置、または(恐らくは過去のメッセージが送信された時間に対する)メッセージが送信された時間に基づくことができる。] [0010] 好ましくは、メッセージ・ブローカを操作する方法は、トピックに関するさらに別のメッセージを受信すること、そのさらに別のメッセージをメッセージのシーケンスの終了として識別すること、ならびにトピックに対する1つまたは複数の既存のサブスクライバ、およびトピックに対する登録済みの新しいサブスクライバに、トピックに関する将来のすべてのメッセージを送信することをさらに含む。メッセージ・ブローカは、シーケンスの終了を識別し、シーケンス条件に関連する特別な操作手順を効果的に終了させるように構成することもできる。終了が判定された後は、すべてのサブスクライバが同じ立場に戻り、トピックに関して受信される任意の新しいメッセージは、古いサブスクライバであっても、新しいサブスクライバであっても、すべてのサブスクライバに送信されるようになる。新しいシーケンスを開始する別のメッセージが受信される場合、プロセスを再び開始することができる。] [0011] 理想的には、メッセージ・ブローカを操作する方法は、メッセージをメッセージのシーケンスの開始として識別するステップに続いて、メッセージのシーケンスに対応する新しいトピックを作成すること、および新しいトピックに対して1つまたは複数の既存のサブスクライバを加入させることをさらに含む。次いでこれは、トピックに関して受信されるすべての将来のメッセージについて、トピックに関して各メッセージを発行するか、それとも新しいトピックに関して各メッセージを発行するかを判定することをさらに含むことができる。これは、メッセージ・ブローカがメッセージの既存のシーケンスからの新しいサブスクライバの分離を実施することのできる一方式である。メッセージ・ブローカは、メッセージのシーケンスに対応する新しいサブトピックを作成し、新しいトピックに1つまたは複数の既存のサブスクライバを加入させる。シーケンスに関係する、受信された任意の新しいメッセージは、元のトピックに対してではなく、サブトピックに対して発行される。トピックに対するいかなる新しいサブスクライバも、サブトピックには加入させられない。] [0012] これから、添付の図面を参照しながら、単なる例示として本発明の実施形態を説明する。] 図面の簡単な説明 [0013] publish/subscribeシステムの略図である。 publish/subscribeシステムの別の略図である。 publish/subscribeシステムのメッセージ・ブローカを操作する方法の流れ図である。 publish/subscribeシステムの第2実施形態の略図である。 publish/subscribeシステムの第2実施形態の略図である。 publish/subscribeシステムの第2実施形態の略図である。] 実施例 [0014] publish/subscribeシステムの単純な実施形態が、図1に示されている。このシステムは、メッセージ・ブローカ10、パブリッシャ12、および2つのサブスクライバ14を含む。メッセージ・ブローカ10は、適切なネットワークを介してアクセスされるサーバで実装される。パブリッシャ12およびサブスクライバ14は、ブローカ10を実行するサーバに接続する能力を有する任意のコンピューティング機能でよい。パブリッシャ12およびサブスクライバ14は、デスクトップ・コンピュータ、または例えば携帯電話やPDAなどのモバイル装置でよい。接続装置のパブリッシャまたはサブスクライバとしての指定は、論理ステータスであり、実際には、任意の接続装置は、異なる時間にパブリッシャとサブスクライバのどちらにもなることができる。] 図1 [0015] ブローカ10は、トピックス16のリストを維持し、この例では、トピックス16は第1トピックT1および第2トピックT2である。周知のインターフェースを介して、接続装置は、ブローカ10によって維持されるトピックスを発見することができ、望む通りにトピックスに参加し、脱退することができる。接続装置はまた、ブローカ10によって維持される適切な許可ポリシーに対する接続装置のステータスに応じて、トピックスを作成することもできる。サブスクライバS1は、トピックT1とトピックT2のどちらにも加入する。ブローカ10は、こうしたトピックス16にそのサブスクライバ14を登録したと言われる。一方、サブスクライバS2は、トピックT1に関するサブスクライバであるだけである。一般には、トピックス16は、より記述的である「ゲーム」などの指定を有し、トピックス16の存在を照会する装置は、トピック16についての情報も見つけることができる。] [0016] 図1は、publish/subscribeシステムの非常に単純な実施形態を示し、実際には、ブローカ10は、非常に多数のトピックスをそのサブスクライバと共に格納する。ブローカ10で格納される各サブスクライバは、アドレスを有する。このアドレス(IPアドレスなど)は、関連するサブスクライビング装置へのルーティングを定義する。] 図1 [0017] メッセージ18が図1に示されており、メッセージ18は、それが関係するトピックについての情報をその中に含む。単純なシステムでは、ブローカ10に送信される各メッセージ18は、ヘッダおよび本文を含む。ヘッダは、トピック指定(例えばT1)を含み、またはトピック指定からなり、本文は、メッセージ18のテキストを含む。ブローカ10は、関連するサブスクライバ14へのメッセージ18のルーティングを実現する。この場合、メッセージ18はトピックT1に関係するので、ブローカ10は、そのメッセージ18を2つのサブスクライバS1およびS2にルーティングする。一般には、ブローカ10は、メッセージ18のどんなコピーも維持しないが、ブローカ10に対する管理アクセスを介してこのことを適合させることができる。例えば、ブローカ10は、トピック16に対する任意の新しいサブスクライバに各トピック16に関する最後のメッセージ18を送信するために、そのメッセージを格納することができる。] 図1 [0018] 図2は、新しいサブスクライバS3がトピックT1に加入した後にpublish/subscribeシステムに何が生じるかを示す。新しいサブスクライバ14は、ブローカ10に適切な管理メッセージを送信することにより、トピックT1に加入することを望むことをブローカ10に登録する。図からわかるように、ブローカ10は、そのトピックT1に関してブローカ10のリスト16内に新しいサブスクライバを登録している。パブリッシャ12から新しいメッセージ18’を受信したとき、ブローカ10は、そのトピックに対する現サブスクライバのすべてにそのメッセージ18’を配布し、現サブスクライバは、サブスクライバS1、S2、およびS3である。ブローカ10によって維持されるリスト16は、サブスクライバが特定のトピックス16に加入し、脱退することに伴って定期的に変化する。] 図2 [0019] しかし、標準メッセージング・ブローカの動作は、図3の流れ図に従って改善することができる。これは、標準構成では、新しいサブスクライバ14がトピック16に加入するとすぐにメッセージ18の受信を首尾よく開始することができ、その結果、新しいサブスクライバ14がシーケンスの先の部分を形成するメッセージ18を受信していないときに、シーケンスの一部を形成するメッセージ18を受信することがあるからである。この後のメッセージ内容は、後者のサブスクライバ14にとって紛らわしい可能性があり、または無意味である可能性が考えられる。この状況に対処するために、図1および2のメッセージ・ブローカ10が、図3のプロセス流れ図に従って動作するように構成される。] 図1 図3 [0020] publish/subscribeメッセージ・ブローカを操作する方法は、第1に、パブリッシャ12からトピック16に関するメッセージ18を受信するステップS1と、第2に、メッセージ18をメッセージのシーケンスの開始として識別するステップS2とを含む。ブローカ10は、受信したメッセージ18をメッセージの新しいシーケンスとの開始として識別しなければならない。これを達成する一方式は、メッセージ18が新しいシーケンスの開始であることを示す、メッセージ18の内容の中のマーカ(明示的または暗黙的でよい)について、受信したメッセージ18の内容をブローカ10が調べることである。] [0021] 例えば、メッセージ18の元のパブリッシャ12は、メッセージの本文内に、メッセージ18がメッセージの新しいシーケンスの開始であることをメッセージ・ブローカ10に示すフラグを所定のプロトコルに従って含めることができる。フラグがない場合、メッセージの内容からメッセージ18がメッセージのシーケンスの最初であることを(1つまたは複数の処理アルゴリズムによって)判定するように、メッセージ・ブローカ10を構成することができる。例えば、トピック16が1つまたは複数のチェス・ゲームの動きに関して維持される場合、例えば「1.e4」または同様の何かの存在が、新しいシーケンスが始まったことを示す。] [0022] メッセージを新しいシーケンスの開始として識別することは、メッセージ18の内容以外の何かに基づくことができる。例えば、特定のパブリッシャ12をメッセージ18の新しいシーケンスのソースとして識別するようにメッセージ・ブローカ10を構成することができ、その場合、ステップS2でのメッセージ18の識別は、パブリッシャ12の位置に基づく。ブローカ10によって実装される別の実現可能な方式は、絶対時間(その日の第1メッセージ)、または例えば以前のメッセージが送信された時間に関係する相対時間としての、メッセージが送信された時間に関係付けることができる。] [0023] メッセージ18を受信した後、ステップS3で、メッセージ・ブローカ10が、トピック16に対する(1つまたは複数の)既存のサブスクライバ14にメッセージ18を送信するように構成される。この時点で、ブローカ10は、受信したメッセージをまさにあたかも通常のメッセージ18であるかのように扱っており、それぞれのトピック16に登録する現在のサブスクライバ14のすべてにそのメッセージ18を送信する。実際、メッセージ18のシーケンスが始まった後に新しいサブスクライバ14がトピック16に参加しない場合、メッセージ・ブローカ10の動作で変更は行われない。] [0024] しかし、ステップS4で、メッセージ・ブローカ10は、トピック16に対する新しいサブスクライバ14を登録する。新しいサブスクライバ14がトピック16に追加された後は、ステップS5で、パブリッシャ12からトピック16に関する別のメッセージ18を受信するとき、メッセージ・ブローカ10は、トピック16に対する既存のサブスクライバ14にその別のメッセージ18を送信するが、トピック16に対する登録済みの新しいサブスクライバ14には送信しないように構成される(ステップS6)。実際に、新しいシーケンスが始まった後にトピック16に参加するサブスクライバ14は、トピック16に関するどんな別のメッセージ18も受信しない。既存のサブスクライバ14だけが新しいメッセージ18を受信する。] [0025] ブローカ10はまた、トピック16に関するさらに別のメッセージ18を受信し、そのさらに別のメッセージ18をメッセージのシーケンスの終了として識別し、トピック16に対する既存のサブスクライバ14、およびトピック16に対する登録済みの新しいサブスクライバ14に、トピック16に関するすべての将来のメッセージ18を送信するように構成される。ブローカ10は、シーケンスを閉じ、通常動作モードに戻る手順を実装している。シーケンスに対して終了メッセージが検出された後、シーケンスが進行中にトピック16に登録された新しいサブスクライバ(複数可)14は、今度は、トピック16に対して発行されるすべての新しいメッセージ18を受信する。] [0026] 既存のサブスクライバと新しいサブスクライバの分離を実装するようにブローカ10を構成することのできる一方式は、シーケンスを管理するために、バックグラウンドで新しいサブトピックを作成することである。パブリッシャ12およびサブスクライバ14は、サブトピックの存在に気付いていないが、メッセージ18をメッセージのシーケンスの開始として識別するステップ(ステップS2)に続いて、ブローカ10は、メッセージのシーケンスに対応する新しいトピックを作成し、新しいトピックに1つまたは複数の既存のサブスクライバ14を加入させるように構成される。] [0027] これがどのように機能するかについての概要が、図4を参照しながら以下で説明される。この図では、サブスクライバS1がトピック16に加入しており、トピック16は名前「ゲーム」を有する。ブローカ10は、トピック16に対するサブスクライバS1のサブスクリプションを登録する。次いで、パブリッシャP1が、Game1に関する第1メッセージ18をトピック「ゲーム」に対して発行する。ブローカ10は、発行されたメッセージ18を受信して、このメッセージ18をメッセージ18の新しいシーケンスの開始として識別する。ブローカ10は、実際には新しいサブトピック20を作成し、「ゲーム/game1」と題する、トピック20に関するメッセージ18を発行する。発行したメッセージ18を送信する前に、ブローカ10は、サブトピック20に対するすべての既存のサブスクライバ14(すなわちサブスクライバS1)に関するサブスクリプションを作成する。そのときサブスクライバS1は、トピック「ゲーム」およびサブトピック「ゲーム/game1」に加入し、Game1に関する最初の発行されたメッセージ18を受信する。] 図4 [0028] 図5は、新しいサブスクライバS2がトピック「ゲーム」に加入するときに何が生じるかを示す。ブローカ10は、トピック「ゲーム」に対するサブスクライバS2のサブスクリプションを登録するが、新しいサブスクライバS2がメッセージ・ブローカ10によって登録されたときに既に存在し、動作中であったサブトピック20に対するサブスクライバS2のサブスクリプションは登録しない。パブリッシャP1がGame1に関する別のメッセージ18をトピック「ゲーム」に対して発行するとき、ブローカ10は、発行されたメッセージ18を受信し、それをトピック「ゲーム/game1」に対して発行する。既存のサブスクライバ(S1)は、新しいメッセージ18を受信するが、新しいサブスクライバS2は受信しない。サブスクライバS1は、Game1に関する第2メッセージを受信するが、サブスクライバS2は受信しない。] 図5 [0029] メッセージのシーケンスのネスティングが起こり得る。例えば、第1シーケンスが進行中に、メッセージの新しいシーケンスを新しいサブトピック20として開始する可能性がある。このことが図6に示される。この例では、パブリッシャP2が、Game2に関する第1メッセージ18をトピック「ゲーム」に対して発行する。ブローカ10は、発行されたメッセージ18を受信し、メッセージ18をメッセージ18の新しいシーケンスの開始として識別し、したがって第2サブトピック20を作成する。ブローカ10は、実際にはトピック「ゲーム/game2」に関するメッセージ18を発行する。発行されたメッセージ18を送信する前に、ブローカは、サブトピック「ゲーム/game2」に対するすべての既存のサブスクライバ(すなわちサブスクライバS1およびサブスクライバS2)に関するサブスクリプションを作成する。そのときサブスクライバS1は、トピック「ゲーム」およびサブトピックス「ゲーム/game1」および「ゲーム/game2」に加入し、そのときサブスクライバS2は、トピック「ゲーム」およびサブトピック「ゲーム/game2」に加入する。サブスクライバS1およびサブスクライバS2はどちらも、Game2に関する第1メッセージ18を受信する。] 図6 [0030] サブトピック20の名前を求めることのできる様々な方式がある。例えば、サブトピック20の名前は、例えばブローカ10上で管理可能とすることができ、または新しいシーケンスの開始を示すメッセージ18のタイムスタンプに基づくことができる(実際には、サブトピック20の名前は人間が読取り可能である必要はなく、名前は任意の文字の構成を含むことができる)。] [0031] このことを実装し、拡張することのできる多数の方式がある。すべてのシナリオは、トピックごとのものであり、複数のトピックスに関するメッセージ・シーケンスについては許可されない(どのクライアントも知る限り、異なるトピックスが明らかにブローカによって使用される)。] [0032] メッセージのシーケンスの開始および終了を判定するのに多数の異なる方式がある。例えば、パブリッシャ・クライアントIDによってメッセージ・シーケンスを分割することが可能である。この場合、パブリッシャはメッセージ・シーケンスに気付いておらず、現パブリッシャ実装に対する変更は不要である。別の方法では、パブリッシャがブローカ10にAPI呼出しを行い、メッセージ・シーケンスの開始および終了を指定することを可能にすることもできる(パブリッシャは、一度に単一のメッセージ・シーケンスを管理することができる)。第3の代替実施形態は、パブリッシャがメッセージ・ヘッダでシーケンスIDを指定することを可能にすることであり、これにより、パブリッシャが一度に複数のメッセージ・シーケンスを管理することが可能となり、インターリーブすることができる。競合を回避するために固有シーケンスIDを得る方法がブローカから要求されることがあることに留意されたい。] [0033] トピックスからサブトピックスにサブスクライバをいつリダイレクトするかを判定することは、いくつかのポリシーに基づくことができる。例えば、サブトピックスが作成される(メイン)トピックからサブスクライバが加入解除するまで、サブスクライバは、後で作成されたすべてのサブトピックスに加入する。サブスクライバは、どんなリダイレクションも気付かず、実際には、単一の既知のサブスクリプションを介して複数のトピックスに加入し、すなわち現サブスクライバ実装に対する変更はない。あるいは、サブスクライバは、次に新しく作成されたサブトピック(その時点で、サブスクライバのメイン・サブスクリプションが除去される)にだけ加入し、この場合もサブスクライバはどんなリダイレクションも気付かず、すなわち現サブスクライバ実装に対する変更はない。サブスクライバは、上記の1つをAPIサブスクリプション呼出しの一部として選択することができ、その場合、サブスクライバは、トピック・リダイレクションが行われることに気付くが、サブスクライバがリダイレクトされる実際のトピックスには気付かない。] [0034] サブトピックス20を使用する本発明の実施形態では、サブトピック20が作成された後は、サブスクライバ14がベース・トピック16から加入解除することが可能である。これにより、サブスクライバ14にとって有用な機能が与えられる。例えば、メッセージ・ブローカ10の動作に対する拡張は、サブスクライバ14にこの機能を気付かせることであり、これにより、サブスクライバがメッセージ・ブローカ10に効果的に指令すること−「ベース・トピックに関する第1トランザクションに加入し、将来のトランザクションについては知りたくはなく、現れる最初のトランザクションだけについて知りたい」−が可能となり、これは、新しいサブトピック20が作成され、サブスクライバ14が自動的に新しいサブトピック20に加入するとすぐに、ベース・トピック16に対するサブスクライバ14のサブスクリプションを除去するようにブローカ10に命令することになる。] [0035] 既存のpublish/subscribeシステムと同じく、切断に続いて、サブスクライバがサブスクライバの実際のサブスクリプションを維持するために、サブスクリプションは耐久性のあるものでなければならない。耐久性のないサブスクライバ再接続は、以前のどんなサブトピックスにもリダイレクトされない。サブスクライバがメイン・トピックから加入解除するとき、すべての関連するサブトピック・サブスクリプションも除去されなければならない。こうした関連付けをブローカによって維持しなければならないことに留意されたい。] [0036] メイン構成の他の拡張も可能である。例えば、パブリッシャがサブトピックにリダイレクトすべきサブスクライバの数を指定することができるようにシステムを構成することができる。1つ(またはn個)だけのサブスクライバ(複数可)が所与のメッセージのシーケンスを受信することをパブリッシャが指定することが有用であることがある。]
权利要求:
請求項1 publish/subscribeメッセージ・ブローカを操作する方法であって、パブリッシャからトピックに関するメッセージを受信すること、前記メッセージをメッセージのシーケンスの開始として識別すること、前記トピックに対する1つまたは複数の既存のサブスクライバに前記メッセージを送信すること、新しいサブスクライバが前記トピックに登録したこと、および前記トピックに関して前記シーケンスに関連する別のメッセージがパブリッシャから受信されたことに応答して、前記トピックに対する1つまたは複数の既存のサブスクライバに前記別のメッセージを送信するが、前記トピックに対する前記登録済みの新しいサブスクライバには送信しないことを含む方法。 請求項2 前記メッセージをメッセージのシーケンスの開始として識別することが、受信したメッセージの内容にアクセスすること、およびアクセスした前記メッセージの内容に従って、前記メッセージをメッセージのシーケンスの開始として識別することを含む請求項1に記載の方法。 請求項3 前記トピックに関するさらに別のメッセージを受信すること、前記さらに別のメッセージをメッセージの前記シーケンスの終了として識別すること、ならびに前記トピックに対する1つまたは複数の既存のサブスクライバに、および前記トピックに対する前記登録済みの新しいサブスクライバに、前記トピックに関する前記シーケンスに関連しないそれぞれの別のメッセージを送信することをさらに含む請求項1または2に記載の方法。 請求項4 前記シーケンスに関連しないメッセージを受信したことに応答して、前記シーケンスに関連しない前記メッセージに関連する新しいトピックを作成すること、および前記新しいトピックに対して前記新しいサブスクライバを加入させることをさらに含む請求項1ないし3のいずれかに記載の方法。 請求項5 前記メッセージをメッセージのシーケンスの開始として識別することに続いて、メッセージの前記シーケンスに対応する新しいトピックを作成すること、および前記新しいトピックに対して前記1つまたは複数の既存のサブスクライバを加入させることをさらに含む請求項1ないし4のいずれかに記載の方法。 請求項6 前記トピックに関して受信されるメッセージについて、前記トピックに関して前記メッセージを発行するか、それとも前記新しいトピックに関して前記メッセージを発行するかを判定することをさらに含む請求項4または5に記載の方法。 請求項7 パブリッシャからトピックに関するメッセージを受信し、前記メッセージをメッセージのシーケンスの開始として識別し、前記トピックに対する1つまたは複数の既存のサブスクライバに前記メッセージを送信し、新しいサブスクライバが前記トピックに登録したことに応答し、かつ前記トピックに関して前記シーケンスに関連する別のメッセージをパブリッシャから受信したことに応答して、前記トピックに対する1つまたは複数の既存のサブスクライバに前記別のメッセージを送信するが、前記トピックに対する前記登録済みの新しいサブスクライバには送信しないように構成されたpublish/subscribeメッセージ・ブローカ。 請求項8 前記メッセージ・ブローカが、前記メッセージをメッセージのシーケンスの開始として識別するときに、受信したメッセージの内容にアクセスし、アクセスした前記メッセージの内容に従って、前記メッセージをメッセージのシーケンスの開始として識別するように構成される請求項7に記載のメッセージ・ブローカ。 請求項9 前記メッセージ・ブローカがさらに、前記トピックに関するさらに別のメッセージを受信し、前記さらに別のメッセージをメッセージのシーケンスの終了として識別し、前記トピックに対する1つまたは複数の既存のサブスクライバに、および前記トピックに対する前記登録済みの新しいサブスクライバに、前記トピックに関する前記シーケンスに関連しないそれぞれの別のメッセージを送信するように構成される請求項7または8に記載のメッセージ・ブローカ。 請求項10 前記メッセージ・ブローカがさらに、前記シーケンスに関連しないメッセージを受信したことに応答して、前記シーケンスに関連しない前記メッセージに関連する新しいトピックを作成し、前記新しいトピックに対して前記新しいサブスクライバを加入させるように構成される請求項7ないし9のいずれかに記載のメッセージ・ブローカ。 請求項11 前記メッセージ・ブローカが、前記メッセージをメッセージのシーケンスの開始として識別することに続いて、メッセージの前記シーケンスに対応する新しいトピックを作成し、前記新しいトピックに対して前記1つまたは複数の既存のサブスクライバを加入させるように構成される請求項7ないし10のいずれかに記載のメッセージ・ブローカ。 請求項12 前記メッセージ・ブローカがさらに、前記トピックに関して受信したメッセージについて、前記トピックに関して前記メッセージを発行するか、それとも前記新しいトピックに関して前記メッセージを発行するかを判定するように構成される請求項10または11に記載のメッセージ・ブローカ。 請求項13 publish/subscribeメッセージ・ブローカを操作するコンピュータ可読媒体上のコンピュータ・プログラム製品であって、パブリッシャからトピックに関するメッセージを受信する命令と、前記メッセージをメッセージのシーケンスの開始として識別する命令と、前記トピックに対する1つまたは複数の既存のサブスクライバに前記メッセージを送信する命令と、新しいサブスクライバが前記トピックに登録したこと、および前記トピックに関して前記シーケンスに関連する別のメッセージがパブリッシャから受信されたことに応答して、前記トピックに対する1つまたは複数の既存のサブスクライバに前記別のメッセージを送信するが、前記トピックに対する前記登録済みの新しいサブスクライバには送信しない命令とを含む製品。 請求項14 前記メッセージをメッセージのシーケンスの開始として識別する前記命令が、受信したメッセージの内容にアクセスする命令と、アクセスした前記メッセージの内容に従って、前記メッセージをメッセージのシーケンスの開始として識別する命令とを含む請求項13に記載のコンピュータ・プログラム製品。 請求項15 前記トピックに関するさらに別のメッセージを受信する命令と、前記さらに別のメッセージをメッセージの前記シーケンスの終了として識別する命令と、前記トピックに対する1つまたは複数の既存のサブスクライバに、および前記トピックに対する前記登録済みの新しいサブスクライバに、前記トピックに関する前記シーケンスに関連しないそれぞれの別のメッセージを送信する命令とをさらに含む請求項13または14に記載のコンピュータ・プログラム製品。 請求項16 前記シーケンスに関連しないメッセージを受信したことに応答して、前記シーケンスに関連しない前記メッセージに関連する新しいトピックを作成する命令と、前記新しいトピックに対して前記新しいサブスクライバを加入させる命令とをさらに含む請求項13ないし15のいずれかに記載のコンピュータ・プログラム製品。 請求項17 前記メッセージをメッセージのシーケンスの開始として識別する前記命令に続いて、メッセージの前記シーケンスに対応する新しいトピックを作成する命令と、前記新しいトピックに対して前記1つまたは複数の既存のサブスクライバを加入させる命令とをさらに含む請求項13ないし16のいずれかに記載のコンピュータ・プログラム製品。 請求項18 前記トピックに関して受信されるメッセージについて、前記トピックに関して前記メッセージを発行するか、それとも前記新しいトピックに関して前記メッセージを発行するかを判定する命令をさらに含む請求項16または17に記載のコンピュータ・プログラム製品。 請求項19 publish/subscribeメッセージ・ブローカと共に使用される装置であって、パブリッシャからトピックに関するメッセージを受信する受信構成要素と、前記メッセージをメッセージのシーケンスの開始として識別する識別構成要素と、前記トピックに対する1つまたは複数の既存のサブスクライバに前記メッセージを送信する第1送信機と、新しいサブスクライバが前記トピックに登録したことに応答し、かつ前記トピックに関して前記シーケンスに関連する別のメッセージをパブリッシャから受信したことに応答して、前記トピックに対する1つまたは複数の既存のサブスクライバに前記別のメッセージを送信するが、前記トピックに対する前記登録済みの新しいサブスクライバには送信しない第2送信機とを備える装置。
类似技术:
公开号 | 公开日 | 专利标题 US20180212919A1|2018-07-26|System and method for enabling real-time eventing KR101510977B1|2015-04-10|다중-사용자 장치를 위한 메시지 푸시 통지 클라이언트 개량 US8073908B2|2011-12-06|Method and apparatus for utility computing in ad-hoc and configured peer-to-peer networks US7937091B2|2011-05-03|Method and apparatus for resource sharing over handset terminals DE602005003301T2|2008-09-18|Verfahren zum Aufbau einer Verbindung zwischen Peer-Gruppen KR100711661B1|2007-04-27|액티브티 기반 협력을 위해 사용되는 분산 컴퓨터시스템에서 데이터 변경 요청의 우선순위를 결정하고데이터 일관성을 유지하기 위한 방법 및 장치 CN100505704C|2009-06-24|查询用户信息的方法 JP4444518B2|2010-03-31|A distributed system that establishes intelligent sessions between anonymous users over various networks US8812582B2|2014-08-19|Automated screen saver with shared media ES2484240T3|2014-08-11|Método para obtener información de dispositivo de un terminal de usuario y entidad de Función de Servicio de Comunicación del mismo JP5001416B2|2012-08-15|Sipイベント・パッケージの定義により特定のコンテキストでリソースの問い合わせを可能にする方法、システム及びコンピュータ・プログラム US8144185B2|2012-03-27|Communication control method, computer system, conference management server, communication method and portable terminal JP4564697B2|2010-10-20|Method and apparatus for activity-based collaboration by a computer system with a communication manager US7039701B2|2006-05-02|Providing management functions in decentralized networks JP4965574B2|2012-07-04|複数のプロセスにおけるポートの共有 JP4431000B2|2010-03-10|送信者のプレゼンスを示す指示を伴う電子メール・メッセージを配信する方法および機器 JP4317061B2|2009-08-19|プレゼンス情報の共有方法およびシステム EP2858307B1|2019-05-08|System and method for presence notification based on presence attribute US8762475B2|2014-06-24|Simultaneous instant messaging in single window US8977673B2|2015-03-10|Information on availability of services provided by publish-subscribe service CA2642823C|2015-03-24|Managing rich presence collections DE60038460T2|2008-07-31|Anonymität in einem präsenzverarbeitungssystem CN102474432B|2014-08-27|社交网络虚拟专用网络 US10002202B2|2018-06-19|Realtime websites with publication and subscription EP1397923B1|2005-04-20|Mobile instant messaging and presence service
同族专利:
公开号 | 公开日 US8140630B2|2012-03-20| EP2250790A1|2010-11-17| KR20100126786A|2010-12-02| US20090228563A1|2009-09-10| JP5270697B2|2013-08-21| CN101960825A|2011-01-26| WO2009109497A1|2009-09-11| CN101960825B|2013-10-23| EP2250790B1|2016-12-14|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 JP2008533564A|2005-02-24|2008-08-21|ゼラウンドシステムズインコーポレイテッド|データ管理のための方法および装置| WO2007134885A1|2006-05-19|2007-11-29|International Business Machines Corporation|Method, apparatus and computer program for controlling retention of data messages| JP2008124977A|2006-11-15|2008-05-29|Hitachi Ltd|メッセージ配送方法、装置及びプログラム|WO2018190015A1|2017-04-12|2018-10-18|ソニー株式会社|情報処理装置及び情報処理方法、並びにコンピュータ・プログラム| KR20190057818A|2017-11-20|2019-05-29|광운대학교 산학협력단|차등적인 IoT 서비스를 제공하는 우선순위 기반의 MQTT 시스템 및 방법| KR20190064065A|2017-11-30|2019-06-10|한림대학교 산학협력단|IoT 서비스를 위한 메시지 관리 장치 및 방법|US6425012B1|1998-12-28|2002-07-23|Koninklijke Philips Electronics N.V.|System creating chat network based on a time of each chat access request| US6651086B1|2000-02-22|2003-11-18|Yahoo! Inc.|Systems and methods for matching participants to a conversation| US7502825B2|2001-02-21|2009-03-10|Adobe Systems Incorporated|Populating online forums| US7406537B2|2002-11-26|2008-07-29|Progress Software Corporation|Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes| JP2004102547A|2002-09-06|2004-04-02|Nec Corp|コミュニケーションシステム、コミュニケーションサーバ、及び、コミュニケーション方法| GB0426846D0|2004-12-08|2005-01-12|Ibm|Method and system for administration of a broker-based publish/subscribe messaging system| US7684815B2|2005-04-21|2010-03-23|Microsoft Corporation|Implicit group formation around feed content for mobile devices| GB0613195D0|2006-07-01|2006-08-09|Ibm|Methods, apparatus and computer programs for managing persistence in a messaging network|US7882077B2|2006-10-17|2011-02-01|Commvault Systems, Inc.|Method and system for offline indexing of content and classifying stored data| US8370442B2|2008-08-29|2013-02-05|Commvault Systems, Inc.|Method and system for leveraging identified changes to a mail server| US8977673B2|2008-08-29|2015-03-10|Red Hat, Inc.|Information on availability of services provided by publish-subscribe service| US9077750B2|2009-02-27|2015-07-07|Red Hat, Inc.|Using forums as a message transport in an enterprise service bus| KR101198686B1|2009-11-11|2012-11-12|김현수|구독자 기반의 주제별 정보중개방법 및 그 시스템| US9026567B2|2010-05-14|2015-05-05|2236008 Ontario Inc.|Publish-subscribe system| US8874667B2|2010-05-18|2014-10-28|International Business Machines Corporation|Linking topics in a publish/subscribe messaging environment| US9367595B1|2010-06-04|2016-06-14|Software AG USA Inc.|Method and system for visual wiring tool to interconnect apps| US8505033B2|2010-08-26|2013-08-06|Verizon Patent And Licensing Inc.|Universal registration in broker-based messaging systems and methods| US8843580B2|2011-02-20|2014-09-23|International Business Machines Corporation|Criteria-based message publication control and feedback in a publish/subscribe messaging environment| US8793322B2|2011-02-20|2014-07-29|International Business Machines Corporation|Failure-controlled message publication and feedback in a publish/subscribe messaging environment| US8874666B2|2011-02-23|2014-10-28|International Business Machines Corporation|Publisher-assisted, broker-based caching in a publish-subscription environment| US8959162B2|2011-02-23|2015-02-17|International Business Machines Corporation|Publisher-based message data cashing in a publish-subscription environment| US8489694B2|2011-02-24|2013-07-16|International Business Machines Corporation|Peer-to-peer collaboration of publishers in a publish-subscription environment| US8725814B2|2011-02-24|2014-05-13|International Business Machines Corporation|Broker facilitated peer-to-peer publisher collaboration in a publish-subscription environment| US8935330B2|2011-05-11|2015-01-13|International Business Machines Corporation|Redirecting messages in a publish/subscribe messaging system| JP2014515152A|2011-05-18|2014-06-26|インターナショナル・ビジネス・マシーンズ・コーポレーションInternationalBusinessMachinesCorporation|発行/購読メッセージング・システムにおいてメッセージの購読を管理するための方法および装置、ならびにコンピュータ・プログラム| US8473419B1|2011-09-26|2013-06-25|Google Inc.|Dependency resolution in publish/subscribe| US8990301B2|2012-08-22|2015-03-24|International Business Machines Corporation|Broker designation and selection in a publish-subscription environment| US9888086B1|2013-03-15|2018-02-06|Google Llc|Providing association recommendations to users| CN104079614B|2013-03-29|2017-09-12|国际商业机器公司|用于分布式发布订阅系统消息有序获取的方法和系统| RU2670794C9|2013-05-20|2018-11-26|ПЭКСАЙЗ ЭлЭлСи|Способ и система формирования гибкого узла на локальных или распределенных вычислительных системах| WO2014194452A1|2013-06-03|2014-12-11|华为技术有限公司|消息发布与订阅的方法及装置| GB2520514A|2013-11-22|2015-05-27|Ibm|Message delivery in a messaging system| US9544356B2|2014-01-14|2017-01-10|International Business Machines Corporation|Message switch file sharing| CN105338014A|2014-06-26|2016-02-17|青岛海尔智能家电科技有限公司|一种基于订阅机制的通信方法和主题服务器| US10554709B2|2014-07-08|2020-02-04|Microsoft Technology Licensing, Llc|Stream processing utilizing virtual processing agents| GB2532490B|2014-11-21|2017-02-22|Ibm|Publish/subscribe messaging using message structure| US10225219B2|2016-02-22|2019-03-05|International Business Machines Corporation|Message delivery in a message system| JP6584440B2|2017-01-27|2019-10-02|キヤノン株式会社|情報処理システム、情報処理ステムの制御方法およびそのプログラム。| CA3066256A1|2017-06-05|2018-12-13|2689090 Canada Inc.|System and method for displaying an asset of an interactive electronic technical publication synchronously in a plurality of extended reality display devices| KR102031726B1|2017-11-16|2019-10-14|경북대학교 산학협력단|분산된 게시-구독 기법을 이용한 CoAP 기반 사물 인터넷 시스템의 작동 방법|
法律状态:
2011-12-13| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111212 | 2013-02-12| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130212 | 2013-02-20| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130219 | 2013-03-14| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130313 | 2013-04-12| TRDD| Decision of grant or rejection written| 2013-04-17| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130416 | 2013-05-16| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130509 | 2013-05-17| R150| Certificate of patent or registration of utility model|Ref document number: 5270697 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|